import { ElementPlusModifyEnum } from '@/enums/ElementPlusModifyEnum'
import { defaultSettings } from '@/setting'
import { updateElementPlusTheme } from '@/utils/theme'
import _ from 'lodash'
import { defineStore } from 'pinia'

export interface AppSettings {
  themeColor: ThemeColor // 主题颜色
  sidebarLogo: boolean   // 是否展示侧边栏图标
  tagsView: boolean      // 是否展示标签页
}

interface ThemeColor {
  info: string
  primary: string
  success: string
  warning: string
  danger: string
}

export const useSystemStore = defineStore('system', {
  // state: () => {
  //   return {
  //     // 解决浅拷贝对象指向同一地址问题
  //     settings: _.cloneDeep(defaultSettings.settings),
  //   }
  // },
  state: (): {
    settings: AppSettings
  } => {
    return {
      // 解决浅拷贝对象指向同一地址问题
      settings: _.cloneDeep(defaultSettings.settings),
    }
  },
  persist: true,
  // 定义计算属性
  getters: {},
  // 定义操作
  actions: {
    /**
     * 设置主题颜色
     * @param type 类型
     * @param color 颜色
     */
    setThemeColor(type: ElementPlusModifyEnum, color: string) {
      // 修改 store 中主题颜色的值
      this.settings.themeColor[type] = color
      // 更新 Element Plus 主题
      updateElementPlusTheme(type, color)
    },
  },
})
